Amazon EC2 Auto Recoveryをワンライナーで設定する
ども、大瀧です。EC2インスタンスのAWS障害時に自動でStop-StartするAuto Recovery、みなさん活用していますか?以下の記事の通り、最近東京リージョンで利用できるようになったので、「とりあえず全インスタンス設定しとけ!」みたいなケースもあるのではないでしょうか。
- 【新機能】EC2 Cloudwatchの新機能「Auto Recovery」を使ってみた | Developers.IO
- EC2 のAuto Recoveryが東京リージョンにリリースされました | Developers.IO
複数のインスタンスに設定するためにはManagement ConsoleのWeb画面ポチポチでは辛いと思いますので、バッチ処理向けにAWS CLIのワンライナーを考えてみました。
設定方法
以下の通りです。
$ aws cloudwatch put-metric-alarm \ --region ap-northeast-1 \ --alarm-name recover-ec2-instance-i-XXXXXXXX \ --alarm-description "recover-ec2-instance" \ --alarm-actions \ arn:aws:automate:ap-northeast-1:ec2:recover \ arn:aws:sns:ap-northeast-1:111122223333:MyTopic \ --namespace AWS/EC2 \ --metric-name StatusCheckFailed_System \ --dimensions Name=InstanceId,Value=i-XXXXXXXX \ --comparison-operator GreaterThanThreshold \ --unit Count \ --statistic Average \ --period 300 \ --threshold 1 \ --evaluation-periods 1
ポイントは--alarm-actionsオプションで、Auto Recovery(EC2 ActionのRecover)のARNはarn:aws:automate:<リージョン名>:ec2:recoverで固定です。メール通知用のSNSトピックは必要の応じてあらかじめ作成し、オプションにスペース区切りで付与しましょう。
後半3つの設定値は、ケースに応じてチューニングするのがおすすめです。